#include<scheduler.h>
#include<stdio.h>
#include<string.h>
int pid_now;
typedef struct table table_p;
table_p table_process[MAX_PROCESS];
/*
	TABELLA DELLE PRIORITÀ
	0	-	Hardware I/O
	1	-	Sistema
	2	-	Utente

	Da sviluppare..
*/

void idle() {
	while(1) { putk('i',0x7); }
}

void set_process(int pid,char *nome,void (*funzione)()) {
	table_process[pid].funzione=funzione;
	table_process[pid].pid=pid;
	strcopy(table_process[pid].nome_processo,nome);
	total_process++;
}

void scheduler() {
	if(pid_now!=(total_process-1)) {
		pid_now++;
		void (*funzione_processo)(void);
		table_process[pid_now].funzione();
	} else {
		pid_now=0;
	}
}


void init_scheduler() {
	total_process=0;
	pid_now=0;
	set_process(0,"Idle",idle);	// il primo processo è l'idle

	/* al momento lo scheduler viene attivato ma non veranno
		fatti girare processi.
	*/
}
